###########################################################################
#	$Id: labourCompiler.p 15 2009-04-24 04:14:14Z donbeave $
###########################################################################

@CLASS
labourCompiler

@USE
labour/tests/labourAssert.p

@OPTIONS
locals

@searchClassFile[strFile]
  ^pfAssert:required[strFile;string]
  
  $result[]
  
  ^if($CLASS_PATH){
    ^CLASS_PATH.menu{
      ^if(-f $CLASS_PATH.path/$strFile){
        $result[$CLASS_PATH.path/$strFile]
      }
    }
  }

@process[strFile;hshOptions]
## hshOptions.scope
## hshOptions.main
  ^cleanMethodArgument[hshOptions]
  
  ^pfAssert:required[strFile;string]
  
# setting default scope
  $aScope[$caller.self]

# loading file
  $fFile[^file::load[text;$strFile]]

  $sFileBody[^taint[as-is][^fFile.text.trim[]]]

  ^process[$aScope]{$sFileBody}[
    ^if(def $hshOptions){
      $.main[$hshOptions.main]
    }
    $.file[$strFile]
  ]
